package vo

type SysMenuEx struct {
	MenuID    int64        `json:"menu_id"`    // 菜单ID
	MenuName  string       `json:"menu_name"`  // 菜单名称
	ParentID  int64        `json:"parent_id"`  // 父菜单ID
	OrderNum  int32        `json:"order_num"`  // 显示顺序
	Path      string       `json:"path"`       // 路由地址
	Component string       `json:"component"`  // 组件路径
	Query     string       `json:"query"`      // 路由参数
	IsFrame   int32        `json:"is_frame"`   // 是否为外链（0是 1否）
	IsCache   int32        `json:"is_cache"`   // 是否缓存（0缓存 1不缓存）
	MenuType  string       `json:"menu_type"`  // 菜单类型（M目录 C菜单 F按钮）
	Visible   string       `json:"visible"`    // 菜单状态（0显示 1隐藏）
	Status    string       `json:"status"`     // 菜单状态（0正常 1停用）
	Perms     string       `json:"perms"`      // 权限标识
	Icon      string       `json:"icon"`       // 菜单图标
	CreateBy  string       `json:"create_by"`  // 创建者
	UpdateBy  string       `json:"update_by"`  // 更新者
	Remark    string       `json:"remark"`     // 备注
	CreatedAt int64        `json:"created_at"` // 创建时间
	UpdatedAt int64        `json:"updated_at"` // 更新时间
	Children  []*SysMenuEx `json:"children"`
}

type MenuTree struct {
	Id       int64       `json:"id"`       // 菜单id
	Label    string      `json:"label"`    // 菜单名称
	Children []*MenuTree `json:"children"` // 子菜单
}

type SysMenuEntity struct {
	MenuID    int64  `json:"menuId"`    // 菜单ID
	MenuName  string `json:"menuName"`  // 菜单名称
	ParentID  int64  `json:"parentId"`  // 父菜单ID
	OrderNum  int32  `json:"orderNum"`  // 显示顺序
	Path      string `json:"path"`      // 路由地址
	Component string `json:"component"` // 组件路径
	Query     string `json:"query"`     // 路由参数
	IsFrame   int32  `json:"isFrame"`   // 是否为外链（0是 1否）
	IsCache   int32  `json:"isCache"`   // 是否缓存（0缓存 1不缓存）
	MenuType  string `json:"menuType"`  // 菜单类型（M目录 C菜单 F按钮）
	Visible   string `json:"visible"`   // 菜单状态（0显示 1隐藏）
	Status    string `json:"status"`    // 菜单状态（0正常 1停用）
	Perms     string `json:"perms"`     // 权限标识
	Icon      string `json:"icon"`      // 菜单图标
	Remark    string `json:"remark"`    // 备注
	CreatedAt int64  `json:"createdAt"` // 创建时间
	UpdatedAt int64  `json:"updatedAt"` // 更新时间
}

// SysMenu mapped from table <sys_menu>
type SysMenu struct {
	MenuID    int64  `json:"menuId" validate:"required,min=1"` // 菜单ID
	MenuName  string `json:"menuName"`                         // 菜单名称
	ParentID  int64  `json:"parentId"`                         // 父菜单ID
	OrderNum  int32  `json:"orderNum"`                         // 显示顺序
	Path      string `json:"path"`                             // 路由地址
	Component string `json:"component"`                        // 组件路径
	Query     string `json:"query"`                            // 路由参数
	IsFrame   int32  `json:"isFrame"`                          // 是否为外链（0是 1否）
	IsCache   int32  `json:"isCache"`                          // 是否缓存（0缓存 1不缓存）
	MenuType  string `json:"menuType"`                         // 菜单类型（M目录 C菜单 F按钮）
	Visible   string `json:"visible"`                          // 菜单状态（0显示 1隐藏）
	Status    string `json:"status"`                           // 菜单状态（0正常 1停用）
	Perms     string `json:"perms"`                            // 权限标识
	Icon      string `json:"icon"`                             // 菜单图标
	Remark    string `json:"remark"`                           // 备注
	CreatedAt int64  `json:"createdAt"`                        // 创建时间
	UpdatedAt int64  `json:"updatedAt"`                        // 更新时间
}

// EditMenuReq 修改菜单参数
type EditMenuReq struct {
	MenuID    int64  `json:"menuId" validate:"required,min=1"`          // 菜单ID
	MenuName  string `json:"menuName" validate:"required,min=1,max=50"` // 菜单名称
	ParentID  int64  `json:"parentId"`                                  // 父菜单ID
	OrderNum  int32  `json:"orderNum"`                                  // 显示顺序
	Path      string `json:"path" validate:"max=200"`                   // 路由地址
	Component string `json:"component" validate:"max=255"`              // 组件路径
	Query     string `json:"query" validate:"max=255"`                  // 路由参数
	IsFrame   int32  `json:"isFrame"`                                   // 是否为外链（0是 1否）
	IsCache   int32  `json:"isCache"`                                   // 是否缓存（0缓存 1不缓存）
	MenuType  string `json:"menuType" validate:"len=1"`                 // 菜单类型（M目录 C菜单 F按钮）
	Visible   string `json:"visible" validate:"len=1"`                  // 菜单状态（0显示 1隐藏）
	Status    string `json:"status" validate:"len=1"`                   // 菜单状态（0正常 1停用）
	Perms     string `json:"perms" validate:"max=100"`                  // 权限标识
	Icon      string `json:"icon" validate:"max=100"`                   // 菜单图标
	Remark    string `json:"remark" validate:"max=500"`                 // 备注
	UpdateBy  string `json:"updateBy"`                                  // 更新者
}

// AddMenuReq 添加菜单参数
type AddMenuReq struct {
	MenuName  string `json:"menuName" validate:"required,min=1,max=50"` // 菜单名称
	ParentID  int64  `json:"parentId"`                                  // 父菜单ID
	OrderNum  int32  `json:"orderNum"`                                  // 显示顺序
	Path      string `json:"path" validate:"max=200"`                   // 路由地址
	Component string `json:"component" validate:"max=255"`              // 组件路径
	Query     string `json:"query" validate:"max=255"`                  // 路由参数
	IsFrame   int32  `json:"isFrame"`                                   // 是否为外链（0是 1否）
	IsCache   int32  `json:"isCache"`                                   // 是否缓存（0缓存 1不缓存）
	MenuType  string `json:"menuType" validate:"len=1"`                 // 菜单类型（M目录 C菜单 F按钮）
	Visible   string `json:"visible" validate:"len=1"`                  // 菜单状态（0显示 1隐藏）
	Status    string `json:"status" validate:"len=1"`                   // 菜单状态（0正常 1停用）
	Perms     string `json:"perms" validate:"max=100"`                  // 权限标识
	Icon      string `json:"icon" validate:"max=100"`                   // 菜单图标
	Remark    string `json:"remark" validate:"max=500"`                 // 备注
	CreateBy  string `json:"createBy"`                                  // 创建者
}
